package com.cruise.game.service.common;

import com.cruise.game.model.entity.User;
import com.cruise.game.model.param.common.SetAdminParam;
import com.cruise.game.model.param.common.WxLoginParam;
import com.cruise.game.model.vo.common.LoginResultVO;
import com.cruise.game.model.vo.common.TokenVO;

/**
 * 认证服务接口
 *
 * @author cruise
 * @date 2025-02-28
 */
public interface AuthService {

    /**
     * 微信登录
     *
     * @param param 微信登录参数
     * @return 登录结果
     */
    LoginResultVO wxLogin(WxLoginParam param);

    /**
     * 刷新token
     *
     * @param token 旧token
     * @return 新token
     */
    TokenVO refreshToken(String token);

    /**
     * 设置为管理员
     *
     * @param param 设置管理员参数
     * @param userId 用户ID
     * @return 登录结果
     */
    LoginResultVO setAdmin(SetAdminParam param, Long userId);

    /**
     * 生成token
     *
     * @param user 用户信息
     * @return token
     */
    String generateToken(User user);

    /**
     * 构建登录结果
     *
     * @param user 用户信息
     * @param token token
     * @return 登录结果
     */
    LoginResultVO buildLoginResult(User user, String token);
}